home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / INCLUDES / I3DEXPRM.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  3.6 KB  |  67 lines

  1. /* $Id: I3DEXPRM.H 1.11 1997/06/20 20:55:16 john Exp $ */
  2. /*****************************************************************************\
  3. *                                                                             *
  4. * I3DExPrm.h                                                                                *
  5. *   I3DExGeometricPrimitive definition                                        *
  6. *                                                                             *
  7. *           Copyright (c) 1995, Ray Dream, Inc. All rights reserved.          *
  8. *                                                                             *
  9. \*****************************************************************************/
  10.  
  11. #ifndef __I3DEXPRM__
  12. #define __I3DEXPRM__
  13.  
  14. #ifndef __I3DEX__
  15. #include "I3DEx.h"
  16. #endif
  17.  
  18.  
  19. //****** Globally Unique Ids **************************************************
  20.  
  21. DEFINE_GUID(IID_I3DExGeometricPrimitive, 0xAB40E1C0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  22. DEFINE_GUID(IID_IVolumePrimitive, 0xAB40E1C1L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  23. DEFINE_GUID(IID_IRaytracablePrimitive, 0x93ee97d0, 0xc8cb, 0x11d0, 0x85, 0x4e, 0x0, 0xa0, 0xc9, 0xc, 0x1b, 0xf1);
  24.  
  25.  
  26. /*****************************************************************************\
  27. *  I3DExGeometricPrimitive                                                    *
  28. *                                                                             *
  29. *    I3DExGeometricPrimitive is used to define external geometric objects.    *
  30. *    It can implement very few calls to start working, or may implement more  *
  31. *    to provide better integration with other renderers (like being able      *
  32. *    to do the ray-tracing calculations directly).                            *
  33. *                                                                             *
  34. \*****************************************************************************/
  35.  
  36.  
  37. DECLARE_INTERFACE_(I3DExGeometricPrimitive, IUnknown) {
  38.     //-- Geometry calls
  39.     STDMETHOD(GetBBox) (BOX3D* bbox) PURE;                         // Optional - Return E_NOTIMPL if not implemented
  40.     STDMETHOD(EnumPatches) ( EnumPatchesCallback callback, void* privData) PURE;
  41.     STDMETHOD(EnumFacets) ( EnumFacetsCallback callback, void* privData, NUM3D fidelity) PURE;
  42.     STDMETHOD(GetNbrLOD) (short &nbrLod) PURE;
  43.     STDMETHOD(GetLOD) (short lodIndex,NUM3D &lod) PURE;
  44.     STDMETHOD(MakeFacetMesh) (short index,FacetMesh &amesh) PURE;
  45.     STDMETHOD(MakeFacetMesh) (NUM3D lod,FacetMesh &amesh) PURE;
  46.     //-- Shading calls
  47.     STDMETHOD_(ULONG, GetUVSpaceCount) () PURE;
  48.     STDMETHOD(GetUVSpace) (ULONG uvSpaceID, UVSpaceInfo* uvSpaceInfo) PURE;
  49.     STDMETHOD(UV2XYZ) (VECTOR2D* uv, ULONG uvSpaceID, VECTOR3D* resultPosition, BOOLEAN* inUVSpace) PURE; // Optional - Return E_NOTIMPL if not implemented
  50.     };
  51.  
  52. DECLARE_INTERFACE_(IRaytracablePrimitive, IUnknown) {
  53.     STDMETHOD(RayHit) (BOOLEAN* didHit, Ray3D* ray, RayHitParameters* hitParams, RayHit3D* hit) PURE;     // Optional - Return E_NOTIMPL if not implemented
  54.     STDMETHOD(GetRayHitDetails) (RayHit3D* hit) PURE;             // Optional - Return E_NOTIMPL if not implemented
  55.     STDMETHOD(RayAllHits) (Ray3D* aR, NUM3D tmin, NUM3D tmax, RayHit3D* hit, RayHitCallback callback, void* privData) PURE;        // Optional - Return E_NOTIMPL if not implemented
  56.     STDMETHOD(IsInfiniteBB) (BOOLEAN &isInfinite) PURE;
  57.     };
  58.  
  59. DECLARE_INTERFACE_(IVolumePrimitive, IUnknown) {
  60.     STDMETHOD(GetVolumeDensity) (const VECTOR3D &point,COLOR3D &filter,COLOR3D &glow) PURE;
  61.     STDMETHOD(GetVolumeAttenuation) (const VECTOR3D &from,const VECTOR3D &to,COLOR3D &attenuation) PURE;
  62.     STDMETHOD(SetDeformedBoundingBox) (const VECTOR3D &min,const VECTOR3D &max) PURE;
  63.     };
  64.  
  65. #endif
  66.  
  67.